#include <bits/stdc++.h>

using namespace std;

const int N = 1e6 + 10;
int n;
int h[N];
int smax[N],smin[N];
int cmax = 0,cmin = 0;

int res = 0;

int find(int val){
    int l = 1, r = cmax;
    while(l < r){
        int mid = l + r >> 1;
        if(smax[mid] > val) r = mid;
        else l = mid + 1;
    }
    return smax[l] > val ?  l : -1;
}

int main()
{
    cin >> n;
    for(int i = 1;i <=n; i++)cin >> h[i];
    for(int i = 1; i<=n; i++){
        while(cmax && h[smax[cmax]] >= h[i]) cmax --;// 栈中元素小于 x
        while(cmin && h[smin[cmin]] < h[i]) cmin --; // 栈中元素大于等于 x （所以这是左边边界的开始）
        // 区间
        // int val = cmin ? smin[cmin] : 0;  
        
        // int k = find(val);
        // int k = upper_bound(smax+1,smax+1+cmax,smin[cmin]) - smax;
       
        // if(k!= (cmax + 1))
        // res=max(res,i-smax[k]+1);
        int k = find(smin[cmin]);
        if(k != -1)res = max(res,i-smax[k]+1);

        smax[++cmax] = i;
        smin[++cmin] = i;
    }

    cout << res;
   return 0;
}
